package com.cleaningcloud.cld.service;

import com.cleaningcloud.cld.domain.CldContract;
import com.cleaningcloud.cld.domain.CldProject;
import com.cleaningcloud.cld.domain.dto.ClockInDto;
import com.cleaningcloud.cld.domain.vo.CldProjectContractVo;
import com.cleaningcloud.cld.domain.vo.CldProjectVo;

import java.util.List;

/**
 * 项目Service接口
 *
 * @author cleaningcloud
 * @date 2024-10-02
 */
public interface ICldProjectService {
    /**
     * 查询项目
     *
     * @param projectId 项目主键
     * @return 项目
     */
    CldProject selectCldProjectByProjectId(Long projectId);


    List<CldProject> getList(CldProject cldProject);

    /**
     * 查询项目列表
     *
     * @param cldProject 项目
     * @return 项目集合
     */
    List<CldProjectVo> selectCldProjectList(CldProject cldProject);


    /**
     * 查询项目合同列表
     *
     * @param cldProject 项目
     * @return 项目集合
     */
    List<CldProjectContractVo> selectCldProjectContractList(CldProject cldProject);

    /**
     * 新增项目
     *
     * @param cldProject 项目
     * @return 结果
     */
    int insertCldProject(CldProject cldProject);

    /**
     * 修改项目
     *
     * @param cldProject 项目
     * @return 结果
     */
    int updateCldProject(CldProject cldProject);

    /**
     * 批量删除项目
     *
     * @param projectIds 需要删除的项目主键集合
     * @return 结果
     */
    int deleteCldProjectByProjectIds(Long[] projectIds);

    /**
     * 删除项目信息
     *
     * @param projectId 项目主键
     * @return 结果
     */
    int deleteCldProjectByProjectId(Long projectId);

    /**
     * 配置打卡地址
     *
     * @param clockInDto
     * @return
     */
    int clockIn(ClockInDto clockInDto);

    /**
     * 合同到期
     *
     * @param projectId
     * @return
     */
    int projectContractExpires(Long projectId);


    /**
     * 终止项目
     *
     * @param cldContract
     * @return
     */
    int termination(CldContract cldContract);

    /**
     * 项目续签
     *
     * @param projectId
     * @return
     */
    int projectRenewal(Long projectId);
}
